#include<bits/stdc++.h>
using namespace std;

const int N=100010;

int l=0,n=0,m=0,vmax;
int d[N],v[N],a[N],p[N];
int st[N];
int idx=0,ans[N/2];

int beyond_v(int d,int v,int a)
{
        double time=double((v-vmax)/a)*1.00;
        int leng=time*double((v-vmax)/2)*1.00;
        return leng;
}

int main()
{
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    int t; cin>>t;
    while(t--)
    {
        int res=0;
        cin>>n>>m>>l>>vmax; res=m;
        memset(st,0,sizeof st);
        idx++;
        for(int i=1;i<=n;i++)
            cin>>d[i]>>v[i]>>a[i];
        for(int i=1;i<=m;i++)
            cin>>p[i];
        for(int i=1;i<=n;i++)
        {
            if(v[i]>vmax&&a<0)
            {
                st[d[i]]++;
                st[beyond_v(d[i],v[i],a[i])+1+d[i]]--;
            }
            else if(v[i]>vmax&&a>0)
            {
                st[d[i]]++;
                st[N]--;
            }
            else if(v[i]<vmax&&a>0)
            {
                st[beyond_v(d[i],v[i],a[i])+d[i]]++;
                st[N]--;
            }
        }
        for(int i=1;i<=N;i++)
        {
            st[i]=st[i-1]+st[i];
        }
        for(int i=1;i<=m;i++)
        {
            if(st[p[i]]==0)
                res--;
        }
        ans[idx]=res;
    }
    for(int i=1;i<=idx;i++)
        cout<<ans[i]<<endl<<ans[i]<<endl;
    return 0;
}
